home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / tclMotif-1.4 / programs / xselect.c < prev    next >
C/C++ Source or Header  |  1995-06-29  |  2KB  |  88 lines

  1.  
  2. #include <stdio.h>
  3. #include <Xm/MessageB.h>
  4. #include <Xm/List.h>
  5.  
  6. char *fallbackResources[] = {
  7.     "*list.visibleItemCount: 10",
  8.     "*msg.okLabelString: Quit",
  9.     "*send.labelString: Send",
  10.     "*clear.labelString: Clear",
  11.     NULL
  12.     };
  13.  
  14. XtInputId inputID;
  15. Widget msg, list;
  16.  
  17. void
  18. inputReady(client_data, source, id)
  19.     XtPointer client_data;
  20.     int *source;
  21.     XtInputId *id;
  22. {
  23.     XmString xmstr;
  24.     char s[1024];
  25.  
  26.     if (gets(s) == NULL) {
  27.     XtRemoveInput(*id);
  28.     return;
  29.     }
  30.  
  31.     xmstr = XmStringCreateSimple(s);
  32.     XmListAddItem(list, xmstr, 0);
  33. }
  34.  
  35. void
  36. exitCB(w, client_data, call_data)
  37.     Widget w;
  38.     XtPointer client_data, call_data;
  39. {
  40.     exit(0);
  41. }
  42.  
  43. void
  44. sendSelection(w, client_data, call_data)
  45.     Widget w;
  46.     XtPointer client_data, call_data;
  47. {
  48.     XmStringTable items;
  49.  
  50.     XtVaGetValues(list, XmNselectedItems, &items);
  51.     puts((char *) items);
  52. }
  53.  
  54. int
  55. main(argc, argv)
  56.     int argc;
  57.     char **argv;
  58. {
  59.     Widget label;
  60.     XtAppContext app;
  61.     Widget toplevel;
  62.     Arg args[10];
  63.     int n = 0;
  64.  
  65.     toplevel = XtAppInitialize(&app, "XmSend", NULL, 0, &argc, argv,
  66.                 fallbackResources, NULL, 0);
  67.  
  68.  
  69.     n = 0;
  70.     XtSetArg(args[n], XmNdialogType, XmDIALOG_MESSAGE); n++;
  71.     msg = XmCreateMessageBox(toplevel, "msg", args, n);
  72.     XtManageChild(msg);
  73.     XtAddCallback(msg, XmNokCallback, exitCB, NULL);
  74.  
  75.     n = 0;
  76.     XtSetArg(args[n], XmNselectionPolicy, XmSINGLE_SELECT); n++;
  77.     list = XmCreateScrolledList(msg, "list", args, n);
  78.     XtManageChild(list);
  79.     XtAddCallback(list, XmNsingleSelectionCallback, sendSelection, NULL);
  80.     XtAddCallback(list, XmNdefaultActionCallback, sendSelection, NULL);
  81.  
  82.     XtRealizeWidget(toplevel);
  83.  
  84.     inputID = XtAppAddInput(app, 0, XtInputReadMask, inputReady, NULL);
  85.  
  86.     XtAppMainLoop(app);
  87. }
  88.